package com.gugee.ins.common.beanutil;

import com.gugee.ins.common.model.mysql.product.InsProduct;
import com.gugee.ins.common.model.spider.app.product.InsAppProductBody;


/**
 * 转换生成 InsProduct 类
 * @author Huang xin
 */
public class InsAppProductConversion {

    private InsAppProductConversion(){

    }

    public static InsProduct mapper(InsAppProductBody dto) {
        if (dto == null) {
            return null;
        } else {
            InsProduct insProduct = new InsProduct();

            insProduct.setProductId(dto.getProductId());
            insProduct.setProductName(dto.getName());
            insProduct.setPrice(dto.getPrice());
            insProduct.setCurrentPrice(dto.getCurrentPrice());
            insProduct.setCurrentPriceStripped(dto.getCurrentPriceStripped());
            insProduct.setFullPrice(dto.getFullPrice());
            insProduct.setFullPriceStripped(dto.getFullPriceStripped());
            insProduct.setDescription(getDescription(dto));
            insProduct.setCanShareToStory(dto.getCanShareToStory() != null && dto.getCanShareToStory());
            insProduct.setCheckoutStyle(dto.getCheckoutStyle());
            insProduct.setRetailerId(dto.getRetailerId());
            insProduct.setReviewStatus(dto.getReviewStatus());
            insProduct.setExternalUrl(getExternalUrl(dto));
            insProduct.setImage(getImage(dto));
            insProduct.setMerchantUid(getMerchantUid(dto));

            return insProduct;
        }
    }

    private static String getExternalUrl(InsAppProductBody insAppProductBody) {
        if (insAppProductBody.getExternalUrl() != null && insAppProductBody.getExternalUrl().length() > 2048) {
            return insAppProductBody.getExternalUrl().substring(0,2047);
        }
        return insAppProductBody.getExternalUrl();
    }

    private static String getDescription(InsAppProductBody insAppProductBody) {
        if (insAppProductBody.getDescription() != null && insAppProductBody.getDescription().length() > 2048) {
            return insAppProductBody.getDescription().substring(0,2047);
        }
        return insAppProductBody.getDescription();
    }

    private static String getImage(InsAppProductBody insAppProductBody) {
        if (insAppProductBody.getMainImage() == null || insAppProductBody.getMainImage().getImageVersions() == null
                || insAppProductBody.getMainImage().getImageVersions().getCandidates() == null
                || insAppProductBody.getMainImage().getImageVersions().getCandidates().isEmpty()
                || insAppProductBody.getMainImage().getImageVersions().getCandidates().get(0) == null) {
            return null;
        }
        return insAppProductBody.getMainImage().getImageVersions().getCandidates().get(0).getUrl();
    }

    public static long getMerchantUid(InsAppProductBody insAppProductBody) {
        if (insAppProductBody.getMerchant() == null || insAppProductBody.getMerchant().getUid() == null) {
            return 0L;
        }
        return insAppProductBody.getMerchant().getUid();
    }
}
